package com.example.joblinker.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.joblinker.dto.JobApplicationDTO;
import com.example.joblinker.vo.JobApplicationVO;

public interface JobApplicationService {

    /**
     * 创建职位申请
     *
     * @param jobApplicationDTO 职位申请信息
     * @param userId 用户ID
     * @return 创建的职位申请信息
     */
    JobApplicationVO createApplication(JobApplicationDTO jobApplicationDTO, Long userId);

    /**
     * 获取职位申请详情
     *
     * @param id 申请ID
     * @return 职位申请详情
     */
    JobApplicationVO getApplicationDetail(Long id);

    /**
     * 获取用户的申请列表
     *
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页大小
     * @return 申请列表
     */
    Page<JobApplicationVO> getUserApplications(Long userId, Integer page, Integer size);

    /**
     * 获取职位的申请列表
     *
     * @param jobId 职位ID
     * @param page 页码
     * @param size 每页大小
     * @return 申请列表
     */
    Page<JobApplicationVO> getJobApplications(Long jobId, Integer page, Integer size);

    /**
     * 更新申请状态
     *
     * @param id 申请ID
     * @param status 状态
     * @param note 处理备注
     */
    void updateApplicationStatus(Long id, Integer status, String note);

    /**
     * 检查用户是否已经申请过该职位
     *
     * @param jobId 职位ID
     * @param userId 用户ID
     * @return 是否已申请
     */
    boolean hasApplied(Long jobId, Long userId);
} 